package com.design.singleton;

/**
 * @Author: ChengLei.Liu
 * @Date: 2020-06-05 13:49
 * @Description: 单例模式(懒汉式)
 * 双重检查 即解决了线程安全问题  又解决了效率问题
 */
public class Singleton05 {

    /**
     * volatile 可以防止指令重排序 和 保证线程的内存可见 使instance 在完全实例化以后返回
     */
    private static Singleton05 instance;


    public static Singleton05 getInstance(){
        if(instance == null){
            synchronized (Singleton05.class){
                if(instance == null){
                    instance = new Singleton05();
                }
            }
        }
        return instance;
    }

}
